身為一個拖延症晚期aka死線超人的我而言,本次的鐵人賽毫不意外的拖到最後一天才開賽,本來預想中的先利用開賽前的時間屯好存稿,開賽後可以穩穩地進行下去的計畫,也在絲之歌的突襲下化為烏有,不過話說回來絲之歌是真的好玩,建議玩過前作的人一定要去試試看,咳....不小心跑題了
本次的主題正如大家標題所見的是Web Bluetooth API 實戰:30 天打造通用 BLE 偵錯工具,之所以選擇這個題目呢,主要是工作上需要學習JavaScript和Web Bluetooth API相關的內容,剛好趁這個機會一起進行了,順便做一下筆記。
由於上述提到的原因,本次鐵人賽基本可以說是在毫無準備的前提下開始了,因此我選擇透過AI來規劃這一個月的學習計畫,同時也趁這個機會來學習如何透過AI來進行新事物的學習與協作,以下是結合AI提出的建議所規畫出來的30天內容大綱,透過這30天的內容,你能夠學習到JavaScript的基礎語法、網頁的基礎(HTML&CSS)、BLE和GATT 協議,以及如何使用Web Bluetooth API來對BLE裝置進行讀取、寫入、訂閱等操作內容。
| 天數 | 階段 | 每日文章主題 |
|---|---|---|
| 第1-10天 | 第一部分:工具箱的準備 | |
| 1 | I. 基礎建設 | 鐵人賽生存指南:我的「通用 BLE 瀏覽器」專案藍圖 |
| 2 | I. 基礎建設 | 揭開藍芽的神秘面紗:GATT 協議與我們的第一個虛擬裝置 |
| 3 | I. 基礎建設 | JavaScript 啟航:變數、資料型態與語言核心 |
| 4 | I. 基礎建設 | 程式的邏輯:運算子與流程控制 |
| 5 | I. 基礎建設 | 重複的力量:迴圈與迭代的藝術 |
| 6 | I. 基礎建設 | 程式碼的模組化:函式、作用域與閉包 |
| 7 | I. 基礎建設 | 萬物皆物件:設計儲存 GATT Profile 的資料結構 |
| 8 | I. 基礎建設 | 資料的集合:陣列與常用方法實戰 |
| 9 | I. 基礎建設 | 網頁的基石 (HTML):搭建 BLE 瑞士刀的介面 |
| 10 | I. 基礎建設 | 為網頁上妝 (CSS):設計一個清晰的開發者工具介面 |
| 第11-18天 | 第二部分:賦予工具「變形」的能力 | |
| 11 | II. 前端互動 | 網頁的骨架 (DOM):選取核心 UI 區塊 |
| 12 | II. 前端互動 | 專案核心 (1):createElement 動態生成 UI |
| 13 | II. 前端互動 | 專案核心 (2):根據特徵屬性,打造動態互動面板 |
| 14 | II. 前端互動 | 非同步的挑戰:理解探索未知裝置的複雜性 |
| 15 | II. 前端互動 | 現代非同步解方 (1):Promise 的核心概念 |
| 16 | II. 前端互動 | 現代非同步解方 (2):Promise Chaining 串連探索步驟 |
| 17 | II. 前端互動 | 語法蜜糖 async:讓非同步程式碼更簡潔 |
| 18 | II. 前端互動 | 終極武器 await:用同步思維,駕馭非同步探索流程 |
| 第19-28天 | 第三部分:開始實作 | |
| 19 | III. 連接世界 | Web Bluetooth API 導論:安全限制與瀏覽器支援 |
| 20 | III. 連接世界 | 萬物皆可連:acceptAllDevices 的力量與責任 |
| 21 | III. 連接世界 | 建立連結:連接 GATT 伺服器與日誌記錄 |
| 22 | III. 連接世界 | 專案核心 (3):getPrimaryServices() 動態探索所有服務 |
| 23 | III. 連接世界 | 專案核心 (4):getCharacteristics() 動態探索所有特徵 |
| 24 | III. 連接世界 | 整合與渲染:將探索結果動態生成 UI |
| 25 | III. 連接世界 | 綁定事件 (1):為動態生成的「讀取」按鈕注入靈魂 |
| 26 | III. 連接世界 | 綁定事件 (2):為動態生成的「寫入」按鈕注入靈魂 |
| 27 | III. 連接世界 | 綁定事件 (3):為動態生成的「訂閱」開關注入靈魂 |
| 28 | III. 連接世界 | 實戰測試:用我們的工具連接智慧燈泡(暫定) |
| 第29-30天 | 第四部分:細節修飾 | |
| 29 | IV. 專案潤飾 | 深入探索與強健性:讀取描述符與斷線處理 |
| 30 | IV. 專案潤飾 | 鐵人完賽!總結與發表 |
說實話,能不能在時間內完成這麼扎實的內容我心裡也沒底,尤其上班之後就不能像以前一樣一天花個5、6個小時寫鐵人賽的內容,不過我還是會盡力而為,希望能順利完賽,中途不會出現甚麼意外(例如沉迷絲之歌)。
好的,第一天的內容大概就這些了,感謝你能看到這裡,在這邊祝你早安、午安、晚安,我們明天見。
感謝 未知作者 的精彩分享!
JavaScript 生態系統真的很豐富,這樣的分享對開發者很有幫助。
實際的程式碼範例很有幫助,讓理論更容易理解。
遇到的問題和解決方案分享很實用,相信很多人都會遇到類似的情況。
也歡迎版主有空參考我的系列文「南桃AI重生記」:https://ithelp.ithome.com.tw/users/20046160/ironman/8311
如果覺得有幫助的話,也歡迎訂閱支持!